package com.ruoyi.custom.service.impl;

import java.beans.Transient;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.custom.domain.Bill;
import com.ruoyi.custom.mapper.BillMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.custom.mapper.MemberMapper;
import com.ruoyi.custom.domain.Member;
import com.ruoyi.custom.service.IMemberService;
import com.ruoyi.common.core.text.Convert;

import javax.swing.text.BadLocationException;

/**
 * 会员管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-04-08
 */
@Service
public class MemberServiceImpl implements IMemberService 
{
    @Autowired
    private MemberMapper memberMapper;


    /**
     * 查询会员管理
     * 
     * @param id 会员管理主键
     * @return 会员管理
     */
    @Override
    public Member selectMemberById(Long id)
    {
        return memberMapper.selectMemberById(id);
    }

    /**
     * 查询会员管理列表
     * 
     * @param member 会员管理
     * @return 会员管理
     */
    @Override
    public List<Member> selectMemberList(Member member)
    {
        return memberMapper.selectMemberList(member);
    }

    /**
     * 根据手机号模糊查询,会员的名字和phone
     */
    @Override
    public List<Member> selectMemberListByPhone(String phone)
    {

        //判断phone是纯数字组成的字符串还是纯文字组成的字符串
        if(phone.matches("^[0-9]*$")){
            return memberMapper.selectMemberListByPhone(phone);
        }else{
            return memberMapper.selectMemberListByName(phone);
        }




    }


    /**
     * 新增会员管理
     * 
     * @param member 会员管理
     * @return 结果
     */
    @Transient
    @Override
    public int insertMember(Member member)
    {

        member.setCreateTime(DateUtils.getNowDate());
        BigDecimal balance = member.getBalance();

        //判重 直接返回 code为3
        Member oldMember = memberMapper.selectMemberByPhone(member.getPhone());
        if(oldMember!=null){
            return 3;
        }
        //keyOne增加数据
        member.setKeyOne(balance.toString());

        // 判断 balance 的值，并重新赋值
        switch (balance.intValue()) {
//            会员充卡1000元10次，2000元22次
            case 1000:
                balance = new BigDecimal("10");
                break;
            case 2000:
                balance = new BigDecimal("22");
                break;
            default:
                // 如果没有匹配的条件，可以选择保持原值或执行其他操作
                balance = new BigDecimal("0");
                break;
        }
        member.setBalance(balance);
        // 默认会员等级
        member.setLevel("0");;

        return memberMapper.insertMember(member);
    }


    /**
     * 修改会员管理
     * 
     * @param member 会员管理
     * @return 结果
     */
    @Override
    public int updateMember(Member member)
    {
        //判断新手机号是否重复
        Member oldMember = memberMapper.selectMemberByPhonePassMe(member);
        if (oldMember != null) {
            return 3; // 如果找到重复手机号，返回对应的错误码
        } else {
            // 如果手机号不重复，执行更新操作
            return memberMapper.updateMember(member);
        }
    }

    /**
     * 批量删除会员管理
     * 
     * @param ids 需要删除的会员管理主键
     * @return 结果
     */
    @Override
    public int deleteMemberByIds(String ids)
    {
        return memberMapper.deleteMemberByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除会员管理信息
     * 
     * @param id 会员管理主键
     * @return 结果
     */
    @Override
    public int deleteMemberById(Long id)
    {
        return memberMapper.deleteMemberById(id);
    }
}
